/**
 * @param {string} s
 * @return {number}
 */

 var lengthOfLongestSubstring = function (s) {
    let len = s.length
    let map = new Map()
    let res = []
    let queue = []
    let flag = true
    for (let i = 0; i < len; i++) {
        // 如果map中无该值 说明没有重复 可以直接推入 并在map中记录
        if (!map.has(s[i])) {
            map.set(s[i], 1)
            queue.push(s[i])
        }
        // 如果找到了
        else {
            queue.push(s[i])
            while (flag) {
                let val = queue.shift()
                if (val === s[i]) {
                    flag = false
                } else {
                    map.delete(val)
                }
            }
        }
        // 如果res中的数组不是最长的 那么则替换
        if (res.length < queue.length) {
            res = queue.slice()
        }
        flag = true
    }
    return res.length
};